#ifndef FHE_CORE_NODEINTERFACE_H
#define FHE_CORE_NODEINTERFACE_H

#include <fhe/core/INodeInterface.h>
#include <map>

namespace fhe
{
  namespace core
  {
    class FHE_API NodeInterface : public INodeInterface
    {
    public:
      NodeInterface( const std::string& module, const std::string& name );
      std::string module() const;
      std::string name() const;
      void addFunc( const IFuncDesc::Ptr& func );
      void addVar( const IVarDesc::Ptr& var );
      void build( Node* node );
    private:
      std::string module_;
      std::string name_;
      std::map< std::string, IFuncDesc::Ptr > funcs_;
      std::map< std::string, IVarDesc::Ptr > vars_;
    };
  }
}

#endif
